对象的显式声明
Explicit Declaration for an object
如何对下面代码中的对象进行显式初始化。。。
#include"iostream"
using namespace std;
class per{
char *name;
int a;
public:
per(int x = 0,char *str = 0):a(x),name(str){}
char* get()
{
return name;
}
};
int main()
{
per obj(100,"test"); // works fine
// now if i want a explicit initialization for above how will i do?
// example -- per obj = (100,"test");
// but i am getting error or may be not aware how to use
return 0;
}
怎么样
per obj = per(100,"test");
术语是直接和复制初始化。
您的初始化也是显式的。
让我们讨论注释代码中的实际问题,即per obj = (100,"test");
。这不会被初始化,因为首先为100,
(我的意思是逗号运算符)计算语句,然后进行初始化。
所以现在分配CCD_ 3将看起来是CCD_。这导致编译错误,因为期望的第一个参数是int
而不是char *
。你应该很幸运,把这个凿沉问题作为编译问题。只要更改构造函数中初始化的顺序,这将消失。。导致一个重大错误未被注意到。基本上,在这种情况下,您期望的内容和编译器处理语句的方式是不同的。
如果您的编译器支持C++11,您可以执行:
per obj = { 100, "test" };
相关文章:
- Arduino C++在构造函数中用参数声明对象数组
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 如何在 if 语句中声明对象并在任何我想的地方使用它?
- 如何使用unique_ptr和make_unique正确声明对象数组
- 声明对象时,如何在C 中修复C2065错误
- 声明对象而不调用默认构造函数
- 一旦对象设置为 null,用于声明对象的堆大小的变量就设置为 null?
- 我可以使用名称而不是类型来声明对象文字吗?
- 在制作(Qt等)GUI时声明对象
- 在基本的GUI编程中,在哪里声明对象和方法
- 同时使用模板和参数声明对象
- "Undefined reference to"使用双模板类声明对象时出错
- 在头文件 C++ 中声明对象
- 在其类中声明对象
- C 可以通过使用要求其为某个类别的对象来声明对象
- 声明对象
- (C++)如何基于条件声明对象类成员
- 使用变量声明对象的名称
- C++ OOP 体系结构:决定是从基类声明对象还是继承基类
- 在声明对象之前在全局函数中使用类的成员函数