将具有默认值的构造函数定义为组合对象的私有字段
Defining constructor with default values to a composition object as a private field
提前感谢所有提供帮助的人
我想在main中声明一个空对象,如下所示:
对象有基元字段和复合字段,它们都是私有的
*.h文件中构造函数的正确签名是什么
例如,如果我有一个类Rectangle,它包含4个点(合成)之间的高度和宽度字段,它将类似于:
#include "point.h" //Standard representation of a point
class Rectangle
{
private:
Point bRight, bLeft, uRight, uLeft;
double height, width;
public:
Rectangle(double, double, Point, Point, Point, Point)
... other not relevant functions
}
以及关于主要功能:
#include "Point.h"
#include "Rectangle.h"
int main()
{
Rectangle r1(); //I want this row to invoke the constructor mantioned.
//above without implementing an empty one.
}
对于基本字段,您只需在*.h文件的签名中放入默认值即可
类似于:
Rectangle(double = 0, double = 0, Point, Point, Point, Point)
- 如何将默认值放入点
- 不那么相关的问题:我注意到,当我在主要
"矩形r1();"虽然我没有为任何
分配默认值,但它还是编译了也没有实现空构造函数,当我调试它时,编译器不允许我进入那一行,为什么
- 如何将默认值放入点
你可以按照评论中提到的那样做:
Rectangle ( double = 0, double = 0, Point = Point()
, Point = Point(), Point = Point(), Point = Point())
- 不那么相关的问题:我注意到,当我在它编译了
Rectangle r1();
,尽管我没有为任何也没有实现空构造函数,当我调试它时,编译器不允许我进入那一行,为什么
它不是构造Rectangle
的实例,而是声明一个函数。要使用默认构造函数构造Rectangle
,请省略括号:
Rectangle r;
1)默认参数几乎可以是任何东西,不需要是文字。包括评论中提到的Point()
。
2) Rectangle r1();
声明CCD_ 6为不带参数并返回CCD_。那里没有初始化,也没有可执行代码,所以没有什么可介入的。无法更改语言以使Rectangle r1();
将r1
声明为对象。要将其声明为对象,但无论其类型如何都强制对其进行初始化,在当前标准中,可以使用{}
而不是()
。较旧的编译器可能不支持此操作,并将其视为语法错误。
相关文章:
- C++中的对象组合
- C++对象文件和程序文件组合编译的 Bashrc 别名
- clang libc :make_tuple与make_shared的组合导致早期对象破坏
- C++组合从 istream 获取的类对象
- 覆盖组合对象的<<运算符会给出错误 C++
- 使用 Arduino 中的构造函数进行对象组合
- Qt C++根据组合框中的选择创建一个对象
- 使用参数组合创建对象
- 面向对象编程和对象组合,如何放置组合属性?
- c++ 在对象组合上使用重载构造函数
- 对象组合与提供显式包装器
- 是否可以使用C++对象组合,其中对象的选择是在运行时确定的
- c++中的对象组合与嵌套类.我该用哪个呢?
- 使用framebuffer对象组合图像
- 对象组合促进了代码重用.(T / F)的原因
- 对象组合c++:没有匹配的函数调用
- 关于>>、<<运算符和 cin 和 cout 对象组合的问题
- 对象组合-无法访问对象属性
- 将多个对象组合成一个返回对象
- C++如何处理对象组合中出现的错误