下面的代码会在c++中引起问题吗?
Would the following code causing problems in C++?
我看到有人在c++类中写这样的代码:
int foo ( int dummy )
{
this->dummy = dummy;
}
我们用那样的代码好吗?会不会出问题?
我试着编译一些像这样的东西,它似乎工作。
@update:我张贴这主要是关于名称dummy
,和内部变量this->dummy
,如果它的问题导致
这对于成员函数来说是非常好的,除了您缺少return
语句。dummy
将遮蔽成员变量,因此您使用this->
来引用成员。
int foo ( int dummy )
{
this->dummy = dummy; // set member to argument
return this->dummy;
}
对于比简单的set函数更复杂的东西不要这样做,因为它会令人困惑。
int foo ( int dummy ) // Bad practise! Rename this param as the function isn't a setter
{
this->dummy = dummy * 2 + 1;
return this->dummy;
}
这样做没有错。如果你使用dummy,假设它来自类,但实际上它来自参数,这可能会让人感到困惑。
依我看,最好是用一些东西来表示它是一个类成员。有些人直接用mDummy,有些人用m_Dummy,还有些人直接写dummy_。
这取决于你喜欢什么,但最重要的是你应该保持一致。
代码不正确。该函数被定义为返回int
,但没有return
语句。编译器可能只给出一个警告,但是调用foo
的函数可能期望它返回一个有效值,但它没有,并且可能发生不好的事情。
如果要传递与成员变量同名的参数,则必须这样做。但是,通过使用不同的名称来避免隐藏的(成员)变量可能是更好的做法。有不同的编码风格,有些会使用dummy_,有些会使用mDummy或其他方式来命名成员变量。
你的使用没有错,但是代码需要返回一个int,因为它是一个int函数:)
当前类中的虚拟变量被分配给传递的int,但是请记住它们是不同的,但现在指向相同的东西,因此最好给它一个不同的名称,因为它在不同的
但是,在某些变量类型下,您可以松散精度。
#include <stddef.h>
typedef struct intlist {
int size;
int i[1];
} intlist;
intlist *
makeintlist (int size)
{
intlist *ilp = malloc (offsetof (intlist, i[size])); /* not C++ */
ilp->size = size;
return ilp;
}
成员变量size被分配给size
- 不要这么做,太混乱了!
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 使用mongocxx驱动程序时包含头文件问题