在C++指定的3个不同访问说明符(公共,私有,受保护)下声明虚函数时,可访问性的规则是什么?每个访问说明符的含义是什么?任何解释这个概念的简单代码示例都非常有用.
我是一名C++程序员,目前正在尝试使用Java.使用C++我习惯于跟踪动态内存分配并采用各种技术(如RAII)来避免内存泄漏.我们所知道的Java提供了一个垃圾收集器(GC)来处理内存泄漏.因此,在使用Java进行编程时,应该放弃堆内存的所有健康问题并将其留给GC来处理内存泄漏,或者是有一种类似于没有GC的编程语言时的方法,尝试照顾你分配的内存,让GC处理你可能错过的内存.该方法应该是什么?两者的缺点是什么?
我在ubuntu中使用c ++和apatana作为我的IDE.
我编译了addressbook.proto文件,如下所示:
protoc -I=/home/workspace/rtb/src/ --cpp_out=/home/workspace/rtb/src/ /home/workspace/rtb/src/addressbook.proto
Run Code Online (Sandbox Code Playgroud)
然后我将输出头文件包含在我的c ++代码中,如下所示:
#include "addressbook.pb.h"
Run Code Online (Sandbox Code Playgroud)
那应该是它.对?
当我构建...我得到一个错误列表,这是太长的列表.下面是最后几行.我错过了什么?如何在c ++中使用proto缓冲区?
./src/addressbook.pb.o:(.rodata._ZTVN8tutorial11AddressBookE[vtable for tutorial::AddressBook]+0x40): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
./src/addressbook.pb.o:(.rodata._ZTVN8tutorial11AddressBookE[vtable for tutorial::AddressBook]+0x48): undefined reference to `google::protobuf::Message::CheckTypeAndMergeFrom(google::protobuf::MessageLite const&)'
./src/addressbook.pb.o:(.rodata._ZTVN8tutorial11AddressBookE[vtable for tutorial::AddressBook]+0x88): undefined reference to `google::protobuf::Message::DiscardUnknownFields()'
./src/addressbook.pb.o:(.rodata._ZTVN8tutorial11AddressBookE[vtable for tutorial::AddressBook]+0x90): undefined reference to `google::protobuf::Message::SpaceUsed() const'
./src/addressbook.pb.o:(.rodata._ZTVN8tutorial6PersonE[vtable for tutorial::Person]+0x20): undefined reference to `google::protobuf::Message::GetTypeName() const'
./src/addressbook.pb.o:(.rodata._ZTVN8tutorial6PersonE[vtable for tutorial::Person]+0x40): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
./src/addressbook.pb.o:(.rodata._ZTVN8tutorial6PersonE[vtable for tutorial::Person]+0x48): undefined reference to `google::protobuf::Message::CheckTypeAndMergeFrom(google::protobuf::MessageLite const&)'
./src/addressbook.pb.o:(.rodata._ZTVN8tutorial6PersonE[vtable for tutorial::Person]+0x88): undefined reference to `google::protobuf::Message::DiscardUnknownFields()'
./src/addressbook.pb.o:(.rodata._ZTVN8tutorial6PersonE[vtable for tutorial::Person]+0x90): undefined …Run Code Online (Sandbox Code Playgroud) 我使用sizeof检查我的64位和opteron机器中的长度和浮子的大小.两者都显示为4.
当我检查limits.h并float.h获得最大浮点数和长值时,这些是我得到的值:
Max value of Float:340282346638528859811704183484516925440.000000
Max value of long:9223372036854775807
Run Code Online (Sandbox Code Playgroud)
由于它们都具有相同的尺寸,因此与长形相比,浮动如何存储如此巨大的价值?
我假设他们有一个不同的浮动存储表示.如果是这样,这是否会影响性能:即使用浮动比使用浮动更快?
请考虑以下C++代码:
using namespace std;
vector<char*> aCharPointerRow;
aCharPointerRow.push_back("String_11");
aCharPointerRow.push_back("String_12");
aCharPointerRow.push_back("String_13");
for (int i=0; i<aCharPointerRow.size(); i++) {
cout << aCharPointerRow[i] << ",";
}
aCharPointerRow.clear();
Run Code Online (Sandbox Code Playgroud)
在该aCharPointerRow.clear();行之后,aCharPointerRow应该删除所有字符指针元素.
上面的C++代码中是否存在内存泄漏?我是否需要显式释放分配给char*字符串的内存?如果有,怎么样?
谢谢你的任何建议.
让我们A重载类operator=
如果我A按值调用一个具有参数的函数,那么重载operator=是否会被调用?
我理解mutable它的用法和方式,我想知道的是它存在的真正动机是什么.我不认为的唯一动机是绕过的不变性this的const成员函数我宁愿认为这是给它更多的东西.
我不认为这只是在设计不良的系统中绕过问题的手段吗?或者是吗?
原始问题的明显分支何时使用mutable即使在良好的设计中也是有意义的?
我知道空类的大小由标准定义为非零.在大多数实现中,它通常是 1个字节.
但是,C++标准是否指定了对象的最小可能大小?假设按照标准,空类对象的大小至少为 1个字节,这是合乎逻辑的.
我用C++/cocos2dx 遇到了"AppDelegate.obj中已定义的错误".
这是我的代码gamestage.h
#ifndef __GAME_STAGES_H__
#define __GAME_STAGES_H__
// stage 1;
namespace gamestage1
{
int btn_number = 9;
}
#endif
Run Code Online (Sandbox Code Playgroud)
game.cpp并menu.cpp使用此gamestage.h文件,没有gamestage.cpp文件.
实际上,我尝试使用extern如下:
extern int btn_number = 9;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
*这会导致什么?*
我正在学习关于对象切片的艰难方法,我想知道指针是否有可能被对象切片.换一种说法:
c++ ×9
memory ×2
c ×1
function ×1
heap-memory ×1
java ×1
mutable ×1
namespaces ×1
overloading ×1
pointers ×1
sizeof ×1
std ×1
vector ×1
virtual ×1