哪种形式是首选:
String my = "Which form shall I use?";
Iterator iter = my.iterator();
Run Code Online (Sandbox Code Playgroud)
要么
Iterator<String> iter = my.iterator();
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢前者,但在我的材料中,他们使用后者.
在你开始投票给我之前请大家阅读这个问题,请理解我不会尝试在这里开始任何不愉快的事情.
这个问题的唯一原因是我越来越意识到这一点,为了更有用,我必须知道Java和/或C#.
好的,这是一个问题:
我知道在J和C#中禁止多重继承.但是如果我做这样的事情(因为我希望有一个继承自B和A两个类的类):
//code in Java
public class B
{
public void methodFromB()
{
}
}
public class A extends B
{
public void methodFromA()
{
}
}
public class C extends A
{
public void methodFromC()
{
}
}
Run Code Online (Sandbox Code Playgroud)
事实上,据我所知,我确实继承了它们(A和B,是的,我确实理解对此的正式解释是对象A是一个专门的B但是如果我想这样做的话就更少了我会,但它看起来不漂亮)
但是,不是在一个声明中执行此操作,而是必须首先创建一个继承自另一个类的类,然后从它派生?
虽然有趣的事情.在上面声明了这些类(在NetBeans中)后,我看到在创建了类C的实例(在main中)之后,我无法在它上调用methodFromC,这是在这个类中定义的方法.
这是什么原因?
谢谢.
我试图沿着这些方向做点什么:
int var = 5;
std::numeric_limits<typeid(var)>::max();
Run Code Online (Sandbox Code Playgroud)
但惊讶的是,它不起作用.我怎样才能解决这个问题?
谢谢.
为什么在这段代码中(这只是工作代码而不是完全异常安全)我收到一个断言错误:
HEAP_CORRUPTION_DETECTED ...
class Allocator
{
public:
explicit Allocator()
{
std::cout << "Allocator()" << '\n';
}
virtual ~Allocator()
{
std::cout << "~Allocator()" << '\n';
}
template<class T>
T* Allocate(const std::size_t count)
{
return static_cast<T*>(::operator new(count));
}
/*[nothrow]*/
template<class T>
void Construct(void* where_, const T& what)
{
new (where_) T(what);
}
template<class T>
void Destruct(T* where_)
{
where_->~T();
}
template<class FwdIter>
void Destruct(FwdIter first, FwdIter last)
{
while (first != last)
{
this->Destruct(&*first);
++first;
}
}
template<class T>
void Deallocate(T* where_) …Run Code Online (Sandbox Code Playgroud) 在下面的代码中(请参阅评论):
#include "stdafx.h"
#include <iostream>
using std::cout;
struct Base
{
void fnc()
{
cout << "Base::fnc()";
}
};
struct Impl
{
void* data_;
Impl(void (Base::*fp)())
{
fp();//HERE I'M INVOKING IT - I'M DOING SOMETHING WRONG!
}
};
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误
"错误1错误C2064:术语不评估为采用0参数的函数"为什么它不起作用以及如何解决它?
如果我有:
struct Base
{
};
struct Derived : Base
{
};
Run Code Online (Sandbox Code Playgroud)
我创建了Derived in main:
Derived* d = new Derived;
Run Code Online (Sandbox Code Playgroud)
我的基地创建在哪里(在堆上或堆栈上)?我是否正确地推断Base是Derived的一部分,因此它是在创建Derived的地方创建的?或者它以其他方式工作?
为了禁用我的课的拷贝,我想声明为private但没有定义operator=(const MyClass&)和MyClass(const MyClass&)-我对这个班也禁止移动构造函数?
这个:
int* p = nullptr;
auto tmp = *p;
Run Code Online (Sandbox Code Playgroud)
不会导致gcc 4.6和VS2010 sp1至少发出警告.在这些编译器中是否有任何选项可以让它们在这种情况下发出警告?我使用/ w4在VS中进行了测试编译.
我正在研究给我的代码,我看到:
AFPSGameMode::AFPSGameMode(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP) { }
Run Code Online (Sandbox Code Playgroud)
我对class关键字的使用特别好奇.这是标准的C++,如果是这样,它意味着什么?
谢谢.
假设我上课了:
class Bad_Date
{
private:
const char* _my_msg;
public:
const char* msg() const
{
return _my_msg;
}
};
Run Code Online (Sandbox Code Playgroud)
我想不能创建这个类的任何对象,但我真的不想在那里放任何其他东西,并使其成为纯虚拟fnc.有没有其他方法可以使这个类抽象或我必须创建虚拟fnc并将其声明为纯虚拟?谢谢.
c++ ×8
inheritance ×2
java ×2
c# ×1
c++11 ×1
dereference ×1
iterator ×1
null ×1
parameters ×1
polymorphism ×1
syntax ×1
typeinfo ×1