#include <iostream>
using namespace std;
class A {
typedef int myInt;
int k;
public:
A(int i) : k(i) {}
myInt getK();
};
myInt A::getK() { return k; }
int main (int argc, char * const argv[]) {
A a(5);
cout << a.getK() << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器将myInt识别为此行中的"int":
myInt A::getK() { return k; }
Run Code Online (Sandbox Code Playgroud)
如何让编译器将myInt识别为int?
class MyClass;
int main()
{
float a = 5;
MyClass c1;
MyClass c2 = a*c1;
MyClass c3 = c1*a;
}
Run Code Online (Sandbox Code Playgroud)
如何重载乘法运算符以使*c1和c1*a都有效?
#include <iostream>
using namespace std;
template <class T1, class T2>
class A {
public:
void taunt() { cout << "A"; }
};
template <class T1>
class A<T1, T1> {
public:
void taunt() { cout << "B"; }
};
class B {};
class C {};
int main (int argc, char * const argv[]) {
A<B> a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何将我的两个参数模板转换为一个参数模板?
上面的代码会给'A a;'一个编译错误 '错误的模板参数数'.
截至2012年3月23日,我想开始使用C++ 11进行编码并在我的所有项目中使用它,因为我看到了许多我非常喜欢的新功能.但是,我没有支持C++ 11中的任何编译器.任何人都可以推荐一些书籍和编译器吗?在我的项目中使用c ++ 11是个好主意吗?qt creator 2.5是否支持c ++ 11?
可能重复:
未定义的行为和序列点
#include <iostream>
using namespace std;
int main()
{
int x[3] = {};
int i=0;
x[i] = i++;
cout << x[0] << " " << x[1] << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
键盘给我这个:第9行:警告:'i'上的操作可能未定义为什么操作未定义?
#include <iosteam>
using namespace std;
Class A
{
int k;
public:
int getK() { return k; }
operator int() { return k; }
};
int main()
{
A a;
cout << a.getK() << " " << int(a) << endl;
}
Run Code Online (Sandbox Code Playgroud)
有什么区别,我应该使用哪一个?我想知道类型转换是否返回引用而getK返回一个副本.
#include <iostream>
using namespace std;
class ClassA {
int k;
public:
ClassA(int i) : k(i)
{
}
~ClassA()
{
cout << "A destroyed" << " k=" << k << endl;
}
ClassA copyAndModify()
{
ClassA a(k*2);
return a;
}
void taunt()
{
cout << k << endl;
}
};
int main (int argc, char * const argv[]) {
ClassA original(1)
ClassA modified = original.copyAndModify();
modified.taunt();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我认为当方法返回时,对象'a'(内部方法copyAndModify)被解构,但事实并非如此.这是否意味着在方法中创建的所有正在返回的对象都不会被解构?这适用于所有编译器吗?
string str = "abcdefgdcb";
cout << sizeof(str.substr(0,3).c_str());
Run Code Online (Sandbox Code Playgroud)
出于某种原因,上面的字符串给了我8.我假设c_str()返回一个空字符串,而sizeof使用null来确定字符串的大小.
#include <iostream>
#include <sstream>
using namespace std;
int get_4()
{
char c = '4';
stringstream s(ios::in);
s << c;
int i;
s >> i;
return i;
}
int main()
{
cout << get_4() << endl;
}
Run Code Online (Sandbox Code Playgroud)
转换对我不起作用.如果我将字符'4'或字符数组{'4','\ 0'}写入stringstream然后将其读出为int i,我就不会回复4.上述代码有什么问题?
for (int i=0; i<N; i++)
for (int j=i; j<N; j++)
fun1(i,j);
Run Code Online (Sandbox Code Playgroud)
上面是嵌套的for循环.第一个for循环从0变为N,第二个for循环从i变为N.上述代码的时间复杂度是多少?
编辑:fun1是o(1)
#include <iostream>
using namespace std;
class base
{
public:
virtual void taunt() = 0;
virtual void hide() = 0;
};
template <int nx, int ny>
class derivedA : public base
{
void hide();
public:
void taunt() { cout << "derivedA" << endl; }
char c[nx][ny];
};
template <int nx, int ny, int nz>
class derivedB : public base
{
void taunt();
public:
void hide() { cout << "hide B" << end; }
char c[nx][ny][nz];
};
int main()
{
derived * …Run Code Online (Sandbox Code Playgroud)